public class Tablero {

	// Estados de juego
	public static final int GANASTE = 1;
	public static final int PERDISTE = 0;
	public static final int JUGANDO = 2;
	
	// Output.
	private static final int DESTAPADO = 1;
	
	public int bombs;
	private int[][] casillas;
	public int[][] tableroInicial;
	private int estado;
	private int destapados = 0;

	public Tablero(int rows, int cols) {
		this.estado = JUGANDO;
		casillas = new int[rows][cols];
	}
	
	public void destapar(int i, int j) {
		if(i<casillas.length && j<casillas.length && i>=0 && j>=0){
			int casillaValue = tableroInicial[i][j];
			
			if(casillas[i][j] != DESTAPADO){
				if(casillaValue != -1 && casillaValue != 0){
					casillas[i][j] = DESTAPADO;
					destapados++;
				}else{
					if(casillaValue == -1) // Hay bomba
						setEstado(PERDISTE);
					else if(casillaValue == 0){
						casillas[i][j] = DESTAPADO;
						destapados++;
						destapar(i-1,j-1);
						destapar(i-1,j);
						destapar(i-1,j+1);
						
						destapar(i,j-1);
						destapar(i,j+1);
						
						destapar(i+1,j-1);
						destapar(i+1,j);
						destapar(i+1,j+1);
					}			
				}
			}
		}
	}

	private void setEstado(int estado) {
		this.estado = estado;
	}

	public int getEstado() {
		//if( destapados == casillas.length )
		return this.estado;
	}

	public void marcar(int i, int j) {
		// TODO Auto-generated method stub
	}

	public String getTableroString() {
		StringBuilder sb = new StringBuilder();
		for (int j = 0; j < casillas.length; ++j) {
			for (int i = 0; i < casillas[j].length; ++i) {
				if (casillas[j][i] == DESTAPADO) {
					sb.append(tableroInicial[j][i]);
				} else {
					sb.append("?");
				}
			}
			sb.append("\n");
		}
		return sb.toString();
	}
}
